package com.clstu.homeworks;

public class HomeWork08 {
    public static void main(String[] args) {

        AAA a = new BBB();//向上转型   注：一个对象的运行类型随时可变（可以随时转型或者指向其他对象，切换指向关系）
                   // ，但是编译类型不可变（无论如何转型，编译类型不变），
        System.out.println("a的运行类型："+a.getClass());//用getClass() 方法可以查看对象的运行类型
        a=new AAA();
        System.out.println("a的运行类型："+a.getClass());//用getClass() 方法可以查看对象的运行类型
        a=new CCC();//向上转型
        boolean[] p=new boolean[100];
        System.out.println("a的运行类型："+a.getClass());//用getClass() 方法可以查看对象的运行类型
        System.out.println(a.countPrimes(10));
    }
}
class AAA{

    public int countPrimes(int n) {
        if(n<=2) return 0;
        int count=0;
        boolean[] pp=new boolean[n];
        //pp[2]=true;
        for(int i=2;i<n;i++){
            if(!pp[i]){
                for(int k=2;k*i<n;k++){
                    pp[k*i]=true;
                }
                count++;
            }
        }
        return count;
    }
}
class BBB extends AAA{

}
class CCC extends BBB{
//    public int countPrimes(int n) {
//        int count=0;
//        int k=0;
//        int[] primes=new int[n];
//        primes[0]=2;
//        for(int i=2;i<=n;i++){
//            for(k=0;k<count;k++){
//                if(i%primes[k]==0) break;
//            }
//            if(k==count) primes[count++]=i;
//        }
//        return count;
//    }

}